package com.woniu.microchargeserver.chargemag.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.woniu.microchargeserver.chargemag.service.IChargedItemsService;
import com.woniu.microchargeserver.common.mapper.ChargedItemsMapper;
import com.woniu.microcommonsserver.entity.ChargedItemsInfoEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

/**
 * 收费项目 的业务逻辑层，增、删、查、改
 * @author hejie
 */
@Transactional(readOnly = true)
@Service
public class ChargedItemsServiceImpl implements IChargedItemsService {

    @Resource
    private ChargedItemsMapper chargedItemsMapper;

    /**
     * 修改 一个收费项目
     * @author hejie
     * @param chargedItemsInfo
     * @return
     */
    @Override
    @Transactional(isolation = Isolation.REPEATABLE_READ,rollbackFor = Exception.class)
   public void updateChargedItems(ChargedItemsInfoEntity chargedItemsInfo){
       chargedItemsMapper.updateChargedItems(chargedItemsInfo);
    }

    /**新增一个 收费项目
     * @author hejie
     * @param chargedItemsInfo
     * @return
     */
    @Override
    @Transactional(isolation = Isolation.REPEATABLE_READ,rollbackFor = Exception.class)
   public void saveChargedItems(ChargedItemsInfoEntity chargedItemsInfo){

        //BillMethod为4时表示使用公式。如果原来使用公式，但是现在修改为“不”，就要把“公式BillFormula置为无效的0-1和2才有效”
        //好像没有成功
        if (chargedItemsInfo.getBillMethod()!=4){
            chargedItemsInfo.setBillFormula((byte)0);
        }
        chargedItemsMapper.saveChargedItems(chargedItemsInfo);
   }

    /**
     * 删除 一个收费项目
     * @author hejie
     * @param id
     * @return
     */
  @Override
  @Transactional(isolation = Isolation.REPEATABLE_READ,rollbackFor = Exception.class)
  public void deleteChargedItems(Long id){
      chargedItemsMapper.deleteChargedItems(id);
  }

    /**
     * 分页查询数据
     * @author hejie
     * @param pageNum 第几页
     * @param pageSize 每页显示多少条数据
     * @param column 排序的字段
     * @param order 升序还是降序
     * @param chargedItemsInfo 查询数据的部分条件
     * @param chargeCodeOrName 模糊：收费代码或收费名称
     * @return
     */
  @Override
  public PageInfo<ChargedItemsInfoEntity> findAllByParams(int pageNum, int pageSize, String column, String order,
                                                          ChargedItemsInfoEntity chargedItemsInfo, String chargeCodeOrName){
      return PageHelper.startPage(pageNum,pageSize).
              doSelectPageInfo(()->chargedItemsMapper.findAllByParams(chargedItemsInfo,chargeCodeOrName,column,order));
    }

    /**
     * 查询所有的“收费项目”
     * @author hejie
     * @return
     */
   @Override
   public List<ChargedItemsInfoEntity> findAllChargedItems(){
       return chargedItemsMapper.findAllChargedItems();
   }

    @Override
    public ChargedItemsInfoEntity findById(Long id) {
        return chargedItemsMapper.findById(id);
    }


}
